package com.zhang.family_doctor.mapper;

import com.zhang.family_doctor.dto.SignUpDetailsDto;
import com.zhang.family_doctor.dto.SignUpDto;
import com.zhang.family_doctor.entity.SignUp;

import java.util.List;

public interface SignUpMapper {
    /**
     * 根据居民id查询签约表
     *
     * @param residentId
     * @return
     */
    List<SignUp> getSignUpByResidentId(Integer residentId);

    /**
     * 居民申请签约
     *
     * @param signUp
     */
    void save(SignUp signUp);

    /**
     * 审核通过
     *
     * @param signUp
     */
    void doctorAudit(SignUp signUp);

    /**
     * 驳回
     *
     * @param signUp
     */
    void reject(SignUp signUp);

    /**
     * 查询全部
     *
     * @return
     */
    List<SignUp> getList();

    /**
     * 定时执行过期
     *
     * @param signUp
     */
    void updateById(SignUp signUp);

    /**
     * 根据id查询
     * @param id
     * @return
     */
    SignUp getSignUpById(Integer id);

    /**
     * 续约申请
     * @param signUp
     */
    void renewalApplication(SignUp signUp);

    /**
     * 续约审核通过
     * @param signUp
     */
    void renewalApproved(SignUp signUp);

    /**
     * 驳回续约申请
     * @param signUp
     */
    void rejectRenewalApplication(SignUp signUp);

    /**
     * 支付
     * @param signUp
     */
    void paymentSucceeded(SignUp signUp);

    /**
     * 给驳回重新申请续约
     * @param signUp
     */
    void renewalApplicationAgain(SignUp signUp);

    /**
     * 续约付款
     * @param signUp
     */
    void renewalsPaymentSucceeded(SignUp signUp);

    /**
     * 查看签约详情
     * @param id
     * @return
     */
    SignUpDetailsDto getSignUpDetails(Integer id);

    /**
     * 自动执行续约
     * @param signUp
     */
    void renewalExecution(SignUp signUp);

    List<SignUpDto> getPending(SignUpDto signUpDto);
}
